Actions Speak Louder Than Words

Author

Nathan Lunceford

Politicians often use optimistic promises to win support, but their past actions reveal their true priorities. Instead of trusting words alone, look at their record — actions speak louder than words.

Casualties of War

Show Code
# List of African countries to exclude
african_countries = [
    "Algeria", "Angola", "Benin", "Botswana", "Burkina Faso", "Burundi", "Cameroon", "Cape Verde",
    "Central African Republic", "Chad", "Comoros", "Congo", "Djibouti", "Egypt", "Equatorial Guinea",
    "Eritrea", "Eswatini", "Ethiopia", "Gabon", "Gambia", "Ghana", "Guinea", "Guinea-Bissau",
    "Ivory Coast", "Kenya", "Lesotho", "Liberia", "Libya", "Madagascar", "Malawi", "Mali",
    "Mauritania", "Mauritius", "Morocco", "Mozambique", "Namibia", "Niger", "Nigeria", "Rwanda",
    "Sao Tome and Principe", "Senegal", "Seychelles", "Sierra Leone", "Somalia", "South Africa",
    "South Sudan", "Sudan", "Tanzania", "Togo", "Tunisia", "Uganda", "Zambia", "Zimbabwe", 
    "Democratic Republic of the Congo", "Côte d'Ivoire", "Democratic Republic of Congo"
]

# Load the CSV file and rename columns
df = pl.read_csv("countries-in-conflict-data.csv").rename({
    "Entity": "country",
    "Code": "country_code",
    "Year": "year",
    "Deaths in ongoing conflicts in a country (best estimate) - Conflict type: all": "total_deaths"
}).select(["year", "country", "total_deaths"])

# Ensure data types for consistency
df = df.with_columns([
    pl.col("year").cast(pl.Int64),
    pl.col("total_deaths").cast(pl.Int64)
])

# Load the 2024 data and rename columns
df_2024 = pl.read_csv("acled_aggregated_20024.csv").rename({
    "Country": "country",
    "Fatalities": "total_deaths"
})

# Add a 'year' column with the value 2024 and ensure consistency in data types
df_2024 = df_2024.with_columns([
    pl.lit(2024).alias("year").cast(pl.Int64),
    pl.col("total_deaths").cast(pl.Int64)
]).select(["year", "country", "total_deaths"])

# Append the 2024 data to the main DataFrame
df_combined = df.vstack(df_2024)

# Remove any trailing or leading whitespace in the 'country' column
df_combined = df_combined.with_columns(
    pl.col("country").str.replace(r"^\s+|\s+$", "")  # This regex removes leading and trailing whitespace
)

# Filter the DataFrame for years between 2001 and 2024, excluding African countries
df_filtered = df_combined.filter(
    (pl.col("year") >= 2001) & (pl.col("year") <= 2024) & (~pl.col("country").is_in(african_countries))
)

# Sum up deaths per year across all non-African countries
deaths_per_year = (
    df_filtered.group_by("year")
    .agg(pl.col("total_deaths").sum().alias("Total Deaths"))
    .sort("year")
)

# Set up a nice style
sns.set_theme(style="whitegrid")

# Plotting
plt.figure(figsize=(11, 7))
plt.plot(deaths_per_year["year"], deaths_per_year["Total Deaths"], marker='o', linestyle='-', color='#8B0000', linewidth=2)  # Dark red color


# Adding shaded regions for each presidency
bush = plt.axvspan(2001, 2008, color='red', alpha=.5, label="Bush/Cheney")
obama = plt.axvspan(2008, 2016, color='blue', alpha=.5, label="Obama/Biden")
trump = plt.axvspan(2016, 2020, color='lightcoral', alpha=0.3, label="Trump/Pence")
biden = plt.axvspan(2020, 2024, color='lightblue', alpha=0.3, label="Biden/Harris")

# Adding data labels above the points
for x, y in zip(deaths_per_year["year"], deaths_per_year["Total Deaths"]):
    plt.text(x, y + max(deaths_per_year["Total Deaths"]) * 0.02, f"{y:,}", ha="center", va="bottom", fontsize=11, weight='bold')

# Titles and labels
plt.title("Total Deaths in Armed Conflicts (2001 - October 2024, Excluding Africa)", fontsize=16, weight='bold')
plt.xlabel("Year", fontsize=12)
plt.ylabel("Total Deaths", fontsize=12)

# Format y-axis with commas
plt.gca().yaxis.set_major_formatter(FuncFormatter(lambda x, _: f"{int(x):,}"))

# Improving the x-axis ticks
plt.xticks(deaths_per_year["year"], rotation=45)

# Adding a subtle grid
plt.grid(True, which='both', linestyle='--', linewidth=0.5, alpha=0.7)

# First legend for presidential terms (upper left), excluding the election lines
first_legend = plt.legend(handles=[bush, obama, trump, biden], loc="upper left", fontsize=10, title="Presidential Terms")
plt.gca().add_artist(first_legend)


# Show plot
plt.tight_layout()
plt.show()

Image 1 Image 2 Image 3

Image 2 Image 1 Image 3

Which is the party of the profits of war?

Major Armed Confilcts under Bush/Cheney

  1. War in Afghanistan (2001) - Initiated in response to the 9/11 attacks to dismantle al-Qaeda and remove the Taliban.
  2. Iraq War (2003) - Launched over alleged weapons of mass destruction, resulting in the ousting of Saddam Hussein.

TOTAL: 2

Major Armed Confilcts under Obama/Biden

  1. Libya Intervention (2011) - U.S. and NATO intervened via airstrikes during the Libyan Civil War, leading to Gaddafi’s ouster and subsequent instability.
  2. Anti-ISIS Campaign (2014) - Obama launched airstrikes in Iraq and Syria to counter ISIS, leading to a multi-national coalition against the group.
  3. Syria Civil War (Indirect) - While the U.S. didn’t start the war, Obama’s administration provided significant support to anti-Assad rebels and launched strikes against ISIS in Syria.
  4. Ukraine (2014) - Following Russia’s annexation of Crimea, the U.S. began providing military aid to Ukraine to support its defense against Russian-backed separatists.

TOTAL: 4

Major Armed Confilcts under Trump/Pence

  1. Continued Anti-ISIS Operations - Trump intensified operations in Iraq and Syria, focusing on ISIS.

TOTAL: 1

Major Armed Confilcts under Biden/Harris

  1. Afghanistan Withdrawal (2021) - Led to the Taliban regaining control, with subsequent violence affecting both Afghans and U.S. interests.
  2. Ukraine Conflict (2022) - Biden’s administration provided extensive military and financial support to Ukraine in response to Russia’s invasion, helping shape the conflict’s course.
  3. Israel-Gaza Conflict (2023) - Amid escalated violence, the Biden administration provided support to Israel, including emergency aid packages and diplomatic backing.

TOTAL: 3

🏆 Winner: Biden — Total: 7

Biden has spent nearly 12 years in the White House as either Vice President or President, overseeing more major armed conflicts than any other U.S. leader in the past 24 years.